package com.tedu.api.io;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

/**
 * listFiles()  返回值：数组---File[]   直接遍历文件、文件夹
 * 遍历文件、文件夹同时，过滤遍历出来的文件、文件夹
 * 需求：获取"API"项目下，名字开头以s 名称
 * listFiles(FileFilter接口)  返回值：数组---File[]
 * Filter过滤器接口：过滤遍历出来的文件、文件夹
 */
public class FilterAPI {
    public static void main(String[] args) throws IOException {

        File file = new File("." + File.separator + "API");
        //MyFilter my=new MyFilter(); 子实现类转换成匿名内部类

       /* FileFilter my = new FileFilter() {
            public boolean accept(File pathname) {
            String name = pathname.getName();
             System.out.println("获取过滤后文件夹名称是：" + name);
             return pathname.startsWith("s");
                }};*/
        //FileFilter my=pathname -> {return pathname.getName().startsWith("s");};
            //File[] subs = file.listFiles(my);//传入过滤器接口对象①自己实现类：MyFilter
            //for(int i = 0;i<subs.length;i++){
                //System.out.println("所有文件和文件夹名:"+ subs[i].getName());
            //}
        //增强for循环 改成2行
        for (File f:new File("." + File.separator + "API").listFiles(pathname -> {return pathname.getName().startsWith("s");})) {
            System.out.println("所有文件和文件夹名:"+f);
    }
}
    }

//获取"API"项目下:File构造器传入"."
//④创建过滤器实现类

//获取API项目下所有文件夹 并且必须是以s开头
//⑤遍历数组
//5.1获取数组下标
//5.2 数组名【下标】
//①自己实现类：MyFilter  实现FileFilter皆可：重写所有方法
//②accept方法：获取File信息，【逻辑判断】条件满足：返回值：true
        //③逻辑：判断获取的文件夹名字是”s“开头
        //3.1获取到过滤器传给我们pathname【File】的名称
        //3.2打印获取到的File名称
        //3.3判断名字是”s“开头 文件夹
        //String字符串提供方法：
        //返回值boolean starWith("s")获取字符串首字母 返回：true